package com.proyecto.personas.modelo.servicio;

import com.proyecto.core.Utilidades.ObtenerFecha;
import com.proyecto.core.modelo.echo.constantes.TipoBusqueda;
import com.proyecto.core.modelo.excepciones.GeneralException;
import com.proyecto.core.modelo.servicio.ServicioGenerico;
import com.proyecto.core.modelo.servicio.interfaces.IServicioTransaccion;
import com.proyecto.personas.modelo.dto.HPersCtaBancarias;
import com.proyecto.personas.modelo.dto.PersCtaBancarias;

public class ServicioPersCtaBancarias extends ServicioGenerico {
	
	public PersCtaBancarias obtenerCuentasPersona(String ciaOpr,int nroPersona) throws GeneralException{
		PersCtaBancarias persCtaBancarias = new PersCtaBancarias(); 
		
			persCtaBancarias = (PersCtaBancarias) buscarCatalogoPorPropiedad( new String[] {"id.ciaopr","id.nropersona","usocuentacod"},
						new Object[] { ciaOpr,nroPersona,"PRI"}, TipoBusqueda.OPE_IGUAL,true).get(0);
		return persCtaBancarias;
	}
	
	
	  private IServicioTransaccion servicioHistPersCtaBancaria;

		
		private HPersCtaBancarias construirHistoricoPersCtaBancarias(PersCtaBancarias persctabanc){
			HPersCtaBancarias hpcb = new HPersCtaBancarias();
			
			hpcb.getId().setCiaopr(persctabanc.getId().getCiaopr());
			hpcb.getId().setNropersona(persctabanc.getId().getNropersona());
			hpcb.getId().setNrocuenta(persctabanc.getId().getNrocuenta());
			hpcb.getId().setSecuencia(ObtenerFecha.ObtenerFechaSistemaFormatoMillis());
			hpcb.getId().setFchtransaccion(ObtenerFecha.ObtenerFechaSistemaYYYYMMDD());
			hpcb.setCtafchinactivacion(persctabanc.getCtaFchInactivacion());
			hpcb.setCtarazoninactcod(persctabanc.getCtaRazonInactCod());
			hpcb.setCuentainactiva(persctabanc.getCuentainactiva());
			hpcb.setDescripcion(persctabanc.getDescripcion());
			hpcb.setFchvencimiento(persctabanc.getFchvencimiento());
			hpcb.setInstfinancod(persctabanc.getInstfinancod());
			hpcb.setTipcuentacod(persctabanc.getTipcuentacod());
			hpcb.setUsocuentacod(persctabanc.getUsocuentacod());
			hpcb.setUsuariocodigoinact(persctabanc.getUsuariocodigoinact());
			hpcb.setVersionHb(persctabanc.getVersionHb());
			
//			Llenamos los Campos de auditoria
			hpcb.setAuditcodsupervisor(persctabanc.getAuditcodsupervisor());
			hpcb.setAuditcodusuario(persctabanc.getAuditcodusuario());
			hpcb.setAuditestatregistro(persctabanc.getAuditestatregistro());
			hpcb.setAuditfechaanulac(persctabanc.getAuditfechaanulac());
			hpcb.setAuditfechacambio(persctabanc.getAuditfechacambio());
			hpcb.setAuditfechacreacion(persctabanc.getAuditfechacreacion());
			hpcb.setAudithoracambio(persctabanc.getAudithoracambio());
			hpcb.setAudithoracreacion(persctabanc.getAudithoracreacion());
			hpcb.setAuditrazonoper(persctabanc.getAuditrazonoper());
			hpcb.setCampousuariochar1(persctabanc.getCampousuariochar1());
			hpcb.setCampousuariochar2(persctabanc.getCampousuariochar2());
			hpcb.setCampousuariochar3(persctabanc.getCampousuariochar3());
			hpcb.setCampousuariochar4(persctabanc.getCampousuariochar4());
			hpcb.setCampousuariochar5(persctabanc.getCampousuariochar5());
			hpcb.setCampousuarionum1(persctabanc.getCampousuarionum1());
			hpcb.setCampousuarionum2(persctabanc.getCampousuarionum2());
			hpcb.setCampousuarionum3(persctabanc.getCampousuarionum3());
			hpcb.setCampousuarionum4(persctabanc.getCampousuarionum4());
			hpcb.setCampousuarionum5(persctabanc.getCampousuarionum5());
			return hpcb;
		}

		
		@Override
		public void incluir(Object o, boolean iniciaTransaccion) throws GeneralException {
//	Antes se hacia un calculo en esta rutina, por eso este Servicio. 
//	Se puede quitar y utilizar el generico mientras no se necesiteotra operacion
			super.incluir(o,iniciaTransaccion);
			HPersCtaBancarias hpcb = construirHistoricoPersCtaBancarias((PersCtaBancarias)o);
			servicioHistPersCtaBancaria.incluir(hpcb,iniciaTransaccion);
		}
		
		public void modificar(Object o, boolean iniciaTransaccion) throws GeneralException {
			super.modificar(o,iniciaTransaccion);		
			//*******guardamos en el historico...	
			HPersCtaBancarias hpcb = construirHistoricoPersCtaBancarias((PersCtaBancarias)o);
			servicioHistPersCtaBancaria.incluir(hpcb,true);
		}


		public IServicioTransaccion getServicioHistPersCtaBancaria() {
			return servicioHistPersCtaBancaria;
		}


		public void setServicioHistPersCtaBancaria(
				IServicioTransaccion servicioHistPersCtaBancaria) {
			this.servicioHistPersCtaBancaria = servicioHistPersCtaBancaria;
		}

	
}